﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
using App_Negocio;
using System.Security.Principal; 

public partial class Alta_Menu : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            IPrincipal p = HttpContext.Current.User;
            string empTipo = (string)Session["TipoEmpleado"];

            if (!p.IsInRole("Empleado"))
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta pagina";

                if (Session["Identificador"] != null)
                {
                    Session["IrAPagina"] = "Principal_Clientes.aspx";
                    Response.Redirect("Bienvenida.aspx");
                }
                else
                {
                    Response.Redirect("login.aspx");
                }
            }

            else if (empTipo != "Encargado_Gastronomia")
            {
                Session["Mensaje"] = "Usted no posee los permisos necesarios para ingresar a esta pagina";
                Session["IrAPagina"] = "Principal_empleados.aspx";
                Response.Redirect("Bienvenida.aspx");
            }
            else
            {
                cargarGVMenu();
				cargarComboTipoMenu();
                cargarComboTipoAlimento();
                Alta_Menu.detalleMenu = new List<Detalle_Menu>();
            }
        }
    }    
    
    public void  cargarComboTipoMenu()
    {
        App_Negocio.Menu_Tipo tipoMenu = new App_Negocio.Menu_Tipo();
        DataTable dt =  tipoMenu.buscarTipoMenu();
        ddlTipoMenu.DataSource = dt;
        ddlTipoMenu.DataTextField = "tMenu_Nombre";
        ddlTipoMenu.DataValueField = "tMenu_Id";
        ddlTipoMenu.DataBind();        
    }

    public void cargarComboTipoAlimento()
    {
        ddlTipoAlimento.DataSource = App_Negocio.Alimento_Tipo.listarTiposDeAlimento();
        ddlTipoAlimento.DataValueField = "Id";
        ddlTipoAlimento.DataTextField = "Nombre";
        ddlTipoAlimento.DataBind();
    }

    protected void ddlTipoAlimento_SelectedIndexChanged(object sender, EventArgs e)
    {
        LBAlimentos.DataSource = App_Negocio.Alimento.buscarAlimentosPorTipo(ddlTipoAlimento.SelectedIndex);
        LBAlimentos.DataValueField = "ali_Id";
        LBAlimentos.DataTextField = "ali_Nombre";
        LBAlimentos.DataBind();
    }
     
    protected void LBAlimentos_SelectedIndexChanged(object sender, EventArgs e)
    {
        App_Negocio.Alimento alimento = new App_Negocio.Alimento();
        DataTable dtAlimem = alimento.cargarAlimentoDetalle(int.Parse(LBAlimentos.SelectedItem.Value));

        gvDetalleAlimento.DataSource = dtAlimem;
        gvDetalleAlimento.DataBind();
       
        //cargar el detalle del alimento
    }

    static List<Detalle_Menu> detalleMenu = new List<Detalle_Menu>();
    
    protected void btnAgregarInsumo_Click(object sender, EventArgs e)
    {
        Menu_Detalle det = new Menu_Detalle();
        det.AlimentoRef = new Alimento();
        det.AlimentoRef.Id = int.Parse(LBAlimentos.SelectedValue);
        det.AlimentoRef.Nombre = LBAlimentos.SelectedItem.Text;
        det.AlimentoRef.Tipo_AlimentoRef = new Alimento_Tipo();
        det.AlimentoRef.Tipo_AlimentoRef.Id = int.Parse(ddlTipoAlimento.SelectedItem.Value);
        det.AlimentoRef.Tipo_AlimentoRef.Nombre = ddlTipoAlimento.SelectedItem.Text;
        det.Cantidad= int.Parse(txtCantidadAlimento.Text);
        detalleMenu.Add( new Detalle_Menu(det));
        cargarGrilla();
    }

    private  void cargarGrilla()
    {

        gvDetalleMenu.DataSource = detalleMenu;
        gvDetalleMenu.DataBind();
        
    }

    private class Detalle_Menu
    {
        private string nombre;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        private int cantidad;

        public int Cantidad
        {
            get { return cantidad; }
            set { cantidad = value; }
        }
        private string tipoAlimento;

        public string TipoAlimento
        {
            get { return tipoAlimento; }
            set { tipoAlimento = value; }
        }

        private Menu_Detalle detalleMenu;

        public Menu_Detalle DetalleMenu
        {
            get { return detalleMenu; }
            set { detalleMenu = value; }
        }



        public Detalle_Menu(Menu_Detalle detalle)
        {
            DetalleMenu = detalle;
            Nombre = detalle.AlimentoRef.Nombre;
            Cantidad = detalle.Cantidad;
            tipoAlimento = detalle.AlimentoRef.Tipo_AlimentoRef.Nombre;
        }
    }

    protected void btnEnviar_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            App_Negocio.Menu menuNuevo = new App_Negocio.Menu();
            menuNuevo.Nombre = txtNombre.Text;
            menuNuevo.Descripcion = txtDescripcion.Text;
            menuNuevo.Menu_tipo_ref = new Menu_Tipo();
            menuNuevo.Menu_tipo_ref.Id = int.Parse(ddlTipoMenu.SelectedValue);
            List<Menu_Detalle> lista = new List<Menu_Detalle>();
            Menu_Detalle item = null;
            foreach (Detalle_Menu dt in detalleMenu)
            {
                item = new Menu_Detalle();
                item = dt.DetalleMenu;
                lista.Add(item);

            }
            menuNuevo.Menu_Detalles = lista;
            menuNuevo.guardarMenu();

            Session["Mensaje"] = "  El menu: " + txtNombre.Text+ " se Guardo Correcttamente" ;
            Session["IrAPagina"] = "Principal_Empleados.aspx";
            Response.Redirect("Bienvenida.aspx");          
        }
    }

    public void cargarGVMenu()
    {
        String[] k = { "MenuID" };
        App_Negocio.Menu menu = new App_Negocio.Menu();
        DataTable dtMenu = menu.cargarGVMenu();
        gvMenu.DataSource = dtMenu;
        gvMenu.DataKeyNames = k;
        gvMenu.DataBind();
    }
 }
